package br.com.dbii;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table
public class Jogos implements Serializable {
	private static final long serialVersionUID = 1L;
	
	@Embeddable
    private class JogosPK implements Serializable{
		private static final long serialVersionUID = 1L;
		
		@ManyToOne
		@JoinColumn(name="idCampeonato", referencedColumnName="idCampeonato")
		private Campeonato campeonato;
		
		@ManyToOne
		@JoinColumn(name="idRodada", referencedColumnName="idRodada")
		private Rodadas rodada;
		
		@ManyToOne
		@JoinColumn(name="idClube1", referencedColumnName="idClube")
		private Clube clube1;
		
		@ManyToOne
		@JoinColumn(name="idClube2", referencedColumnName="idClube")
		private Clube clube2;
		
		public JogosPK(Campeonato campeonato, Rodadas rodada, Clube clube1, Clube clube2) {
			this.campeonato = campeonato;
			this.rodada = rodada;
			this.clube1 = clube1;
			this.clube2 = clube2;
		}
		
		public Campeonato getCampeonato() {
			return campeonato;
		}

		public void setCampeonato(Campeonato campeonato) {
			this.campeonato = campeonato;
		}

		public Rodadas getRodada() {
			return rodada;
		}

		public void setRodada(Rodadas rodada) {
			this.rodada = rodada;
		}

		public Clube getClube1() {
			return clube1;
		}

		public void setClube1(Clube clube1) {
			this.clube1 = clube1;
		}

		public Clube getClube2() {
			return clube2;
		}
		
		public void setClube2(Clube clube2) {
			this.clube2 = clube2;
		}
	}
	
	@EmbeddedId
	private JogosPK jogosPK;
	
	@Column(name="clube1Gol")
    private Integer clube1Gol;
    
	@Column(name="clube2Gol")
    private Integer clube2Gol;
    
	@Column(name="cube1Ponto")
    private Integer clube1Ponto;
    
	@Column(name="clube2Ponto")
    private Integer clube2Ponto;
    
	@Column(name="clube1Amarelo")
    private Integer clube1Amarelo;
    
	@Column(name="clube2Amarelo")
    private Integer clube2Amarelo;
    
	@Column(name="clube1Vermelho")
    private Integer clube1Vermelho;
    
	@Column(name="clube2Vermelho")
    private Integer clube2Vermelho;
	
	public Jogos(Campeonato campeonato, Rodadas rodada,
				 Clube clube1, 			 Clube clube2,
				 Integer clube1Gol, 	 Integer clube2Gol,
				 Integer clube1Ponto,	 Integer clube2Ponto,
				 Integer clube1Amarelo,  Integer clube2Amarelo,
				 Integer clube1Vermelho, Integer clube2Vermelho) {
		
		this.jogosPK = new JogosPK(campeonato, rodada, clube1, clube2);
		this.clube1Gol = clube1Gol;
		this.clube2Gol = clube2Gol;
		this.clube1Ponto = clube1Ponto;
		this.clube2Ponto = clube2Ponto;
		this.clube1Amarelo = clube1Amarelo;
		this.clube2Amarelo = clube2Amarelo;
		this.clube1Vermelho = clube1Vermelho;
		this.clube2Vermelho = clube2Vermelho;
	}

	public Integer getClube1Gol() {
		return clube1Gol;
	}

	public void setClube1Gol(Integer clube1Gol) {
		this.clube1Gol = clube1Gol;
	}

	public Integer getClube2Gol() {
		return clube2Gol;
	}

	public void setClube2Gol(Integer clube2Gol) {
		this.clube2Gol = clube2Gol;
	}

	public Integer getClube1Ponto() {
		return clube1Ponto;
	}

	public void setClube1Ponto(Integer clube1Ponto) {
		this.clube1Ponto = clube1Ponto;
	}

	public Integer getClube2Ponto() {
		return clube2Ponto;
	}

	public void setClube2Ponto(Integer clube2Ponto) {
		this.clube2Ponto = clube2Ponto;
	}

	public Integer getClube1Amarelo() {
		return clube1Amarelo;
	}

	public void setClube1Amarelo(Integer clube1Amarelo) {
		this.clube1Amarelo = clube1Amarelo;
	}

	public Integer getClube2Amarelo() {
		return clube2Amarelo;
	}

	public void setClube2Amarelo(Integer clube2Amarelo) {
		this.clube2Amarelo = clube2Amarelo;
	}

	public Integer getClube1Vermelho() {
		return clube1Vermelho;
	}

	public void setClube1Vermelho(Integer clube1Vermelho) {
		this.clube1Vermelho = clube1Vermelho;
	}

	public Integer getClube2Vermelho() {
		return clube2Vermelho;
	}

	public void setClube2Vermelho(Integer clube2Vermelho) {
		this.clube2Vermelho = clube2Vermelho;
	}
}
